<!DOCTYPE html>
<html lang="en">
<head prefix="og: http://ogp.me/ns#">
  <meta charset="utf-8">
  <title>starRTC文档</title>
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- Canonical links -->
  <link rel="canonical" href="https://starrtc.gitee.io/en/docs/ios-3.html">
  <!-- Alternative links -->
  
    
      <link rel="alternative" hreflang="en" href="https://starrtc.gitee.io/docs/ios-3.html">
    
      <link rel="alternative" hreflang="zh-cn" href="https://starrtc.gitee.io/zh-cn/docs/ios-3.html">
    
  
  <!-- Icon -->
  <link rel="apple-touch-icon" sizes="57x57" href="/icon/apple-touch-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/icon/apple-touch-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/icon/apple-touch-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/icon/apple-touch-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/icon/apple-touch-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/icon/apple-touch-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/icon/apple-touch-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/icon/apple-touch-icon-152x152.png">
  <link rel="icon" type="image/png" href="/icon/favicon-196x196.png" sizes="196x196">
  <link rel="icon" type="image/png" href="/icon/favicon-160x160.png" sizes="160x160">
  <link rel="icon" type="image/png" href="/icon/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="/icon/favicon-16x16.png" sizes="16x16">
  <link rel="icon" type="image/png" href="/icon/favicon-32x32.png" sizes="32x32">
  <meta name="msapplication-TileColor" content="#2f83cd">
  <meta name="msapplication-TileImage" content="/icon/mstile-144x144.png">
  <!-- CSS -->
  <!-- build:css build/css/navy.css -->
  <link rel="stylesheet" href="/css/navy.css">
  <!-- endbuild -->
  <link href="https://starrtc.gitee.io/googleapis.css" rel="stylesheet" type="text/css">
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> 
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css">
  <!-- RSS -->
  <link rel="alternate" href="/atom.xml" title="starRTC文档">
  <!-- Open Graph -->
  <meta name="description" content="Instructions of private deployment serverNote： The initialization process for this page only applies to private deployment services. Private service means that the user can use the free server program">
<meta property="og:type" content="website">
<meta property="og:title" content="starRTC文档">
<meta property="og:url" content="https://starrtc.gitee.io/en/docs/ios-3.html">
<meta property="og:site_name" content="starRTC文档">
<meta property="og:description" content="Instructions of private deployment serverNote： The initialization process for this page only applies to private deployment services. Private service means that the user can use the free server program">
<meta property="og:locale" content="en">
<meta property="og:updated_time" content="2020-09-06T01:05:09.806Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="starRTC文档">
<meta name="twitter:description" content="Instructions of private deployment serverNote： The initialization process for this page only applies to private deployment services. Private service means that the user can use the free server program">
<meta name="twitter:site" content="hexojs">
<meta property="fb:admins" content="100000247608790">
  <!-- Google Analytics -->
  
</head>

<body>
  <div id="container">
    <header id="header" class="wrapper">
  <div id="header-inner" class="inner">
    <h1 id="logo-wrap">
      
      <a href="https://starrtc.gitee.io/" id="logo">starRTC</a>
    </h1>
    <nav id="main-nav">
      <a href="https://starrtc.gitee.io/" class="main-nav-link">Home</a><a href="https://blog.starRTC.com" class="main-nav-link">Blog</a><a href="https://github.com/starrtc/android-demo/issues" class="main-nav-link">Forum</a><a href="/en/docs/" class="main-nav-link">Docs</a><a href="/en/download/" class="main-nav-link">Download</a><a href="/en/contact/" class="main-nav-link">Contact</a>
      
    </nav>
    <div id="lang-select-wrap">
      <label id="lang-select-label"><i class="fa fa-globe"></i><span>English</span></label>
      <select id="lang-select" data-canonical="docs/ios-3.html">
        
          <option value="en" selected>English</option>
        
          <option value="zh-cn">简体中文</option>
        
      </select>
    </div>
    <a id="mobile-nav-toggle">
      <span class="mobile-nav-toggle-bar"></span>
      <span class="mobile-nav-toggle-bar"></span>
      <span class="mobile-nav-toggle-bar"></span>
    </a>
  </div>
</header>

    <div id="content-wrap">
  <div id="content" class="wrapper">
    <div id="content-inner">
      <article class="article-container" itemscope itemtype="http://schema.org/Article">
        <div class="article-inner">
          <div class="article">
            <div class="inner">
              <header class="article-header">
                <h1 class="article-title" itemprop="name"></h1>
                <a href="https://github.com/starRTC/docs/edit/master/en/docs/ios-3.md" class="article-edit-link" title="Improve this doc"><i class="fa fa-pencil"></i></a>
              </header>
              <div class="article-content" itemprop="articleBody">
                <h1 id="Instructions-of-private-deployment-server" class="article-heading"><a href="#Instructions-of-private-deployment-server" class="headerlink" title="Instructions of private deployment server"></a>Instructions of private deployment server<a class="article-anchor" href="#Instructions-of-private-deployment-server" aria-hidden="true"></a></h1><p>Note： The initialization process for this page only applies to private deployment services.</p>
<p>Private service means that the user can use the free server program released by starRTC and run the program on the user’s own server. All data does not store on the starRTC, and we do not bear the risk of illegal data.</p>
<p>The private service SDK does not need to log in. So the sdk of the starRTC does not verify the validity of the user and the users maintain the validity by themselves. The setting of the login service URL is omitted when initialization.</p>
<p>In addition, the SDK can directly set the service address of each function service through the API. The original scheduling link is eliminated. So it is access to small and medium-sized projects more flexibly.</p>
<p>Usage method： </p>
<h2 id="1-Initialization：" class="article-heading"><a href="#1-Initialization：" class="headerlink" title="1 Initialization： "></a>1 Initialization： <a class="article-anchor" href="#1-Initialization：" aria-hidden="true"></a></h2><p>The initialization steps are very similar to the normal version, which is calling a few different API functions.<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line">XHCustomConfig *config = [[XHCustomConfig alloc] init];    </span><br><span class="line">config.serverType = SERVER_TYPE_CUSTOM;</span><br><span class="line">config.imServerURL = appConfig.messageHost;</span><br><span class="line">config.chatRoomServerURL = appConfig.chatHost;</span><br><span class="line">config.liveSrcServerURL = appConfig.uploadHost;</span><br><span class="line">config.liveVdnServerURL = appConfig.downloadHost;</span><br><span class="line">config.voipServerURL = appConfig.voipHost;</span><br><span class="line">[config sdkInitForFree:UserId];</span><br></pre></td></tr></table></figure></p>
<h2 id="2-Login-Exit-SDK" class="article-heading"><a href="#2-Login-Exit-SDK" class="headerlink" title="2 Login / Exit SDK"></a>2 Login / Exit SDK<a class="article-anchor" href="#2-Login-Exit-SDK" aria-hidden="true"></a></h2><p>Set the delegate of XHLoginManager is the current object itself.<br>Get the XHLgoinManager class instance and add the delegate of XHLgoinManagerDelegate ;<br>Get the XHLgoinManager class instance and call the XHLoginManager login method to log in to the SDK.</p>
<p>Example:<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="comment">//set delegate</span></span><br><span class="line">[[XHClient sharedClient].loginManager addDelegate:self];</span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> Connection status is changed</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"> <span class="doctag">@param</span> state status</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">- (<span class="keyword">void</span>)connectionStateDidChange:(XHSDKConnectionState)state</span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment">  Account login from other devices</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">- (<span class="keyword">void</span>)userAccountDidLoginFromOtherDevice</span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> you need to log in again</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">- (<span class="keyword">void</span>)userAccountDidLogout</span><br><span class="line">&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">//login SDK</span></span><br><span class="line">[[XHClient sharedClient].loginManager login:UserId authKey:data completion:^(NSError *error) &#123;</span><br><span class="line">                [UIWindow hiddenProgress];</span><br><span class="line">                <span class="keyword">if</span>(error == nil)&#123;</span><br><span class="line">                    [UIWindow ilg_makeToast:@<span class="string">"登录成功"</span>];</span><br><span class="line">                    self.userNickNameLabel.text = UserId;</span><br><span class="line">                    self.loginButton.selected = YES;</span><br><span class="line">                    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@<span class="string">"UserOnline"</span>];</span><br><span class="line">                &#125; <span class="keyword">else</span>&#123;</span><br><span class="line">                    [UIWindow ilg_makeToast:@<span class="string">"登录失败"</span>];</span><br><span class="line">                    self.userNickNameLabel.text = @<span class="string">"登录失败"</span>;</span><br><span class="line">                    self.loginButton.selected = NO;</span><br><span class="line">                    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:NO] forKey:@<span class="string">"UserOnline"</span>];</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;];</span><br><span class="line"><span class="comment">//logout SDK</span></span><br><span class="line">[[XHClient sharedClient].loginManager logout]</span><br></pre></td></tr></table></figure></p>
<h2 id="3-New-API-for-IM-group" class="article-heading"><a href="#3-New-API-for-IM-group" class="headerlink" title="3 New API for IM group"></a>3 New API for IM group<a class="article-anchor" href="#3-New-API-for-IM-group" aria-hidden="true"></a></h2><p>The user’s own group list and group information (group member list and DND status) can be directly obtained from the SDK’s API.<br>Note: The two APIs below are only used when the private deployment service is available.<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line">        [[XHClient sharedClient].groupManager queryGroupList:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">            NSArray *listArr = nil;</span><br><span class="line">            <span class="keyword">if</span> (listInfo) &#123;</span><br><span class="line"></span><br><span class="line">            &#125;</span><br><span class="line">        &#125;];</span><br><span class="line"></span><br><span class="line">[[XHClient sharedClient].groupManager queryGroupInfo:self.groupID completion:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">            NSDictionary *dict = nil;</span><br><span class="line">            <span class="keyword">if</span> (error == nil &amp;&amp; listInfo) &#123;</span><br><span class="line">            &#125;</span><br><span class="line">            </span><br><span class="line">        &#125;];</span><br></pre></td></tr></table></figure></p>
<h2 id="4-New-API-for-IM-chat-room" class="article-heading"><a href="#4-New-API-for-IM-chat-room" class="headerlink" title="4 New API for IM chat room"></a>4 New API for IM chat room<a class="article-anchor" href="#4-New-API-for-IM-chat-room" aria-hidden="true"></a></h2><p>Note: The three APIs below are only used when the private deployment service is available.<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line">                  NSDictionary *infoDic = @&#123;@<span class="string">"id"</span>:chatRoomID,</span><br><span class="line">                                            @<span class="string">"creator"</span>:UserId,</span><br><span class="line">                                            @<span class="string">"name"</span>:name</span><br><span class="line">                                            &#125;;</span><br><span class="line">                  NSString *infoStr = [infoDic ilg_jsonString];</span><br><span class="line">                  [[XHClient sharedClient].roomManager saveToList:UserId type:CHATROOM_LIST_TYPE_CHATROOM chatroomID:chatRoomID info:[infoStr ilg_URLEncode] completion:^(NSError *error) &#123;</span><br><span class="line">                      </span><br><span class="line">                  &#125;];</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[[XHClient sharedClient].roomManager queryChatroomList:UserId type:[NSString stringWithFormat:@<span class="string">"%d"</span>, CHATROOM_LIST_TYPE_CHATROOM] completion:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">          NSArray *listArr = nil;</span><br><span class="line">          <span class="keyword">if</span> (listInfo) &#123;</span><br><span class="line">              NSData *jsonData = [listInfo dataUsingEncoding:NSUTF8StringEncoding];</span><br><span class="line">              listArr = [NSJSONSerialization JSONObjectWithData:jsonData</span><br><span class="line">                                                        options:NSJSONReadingMutableContainers</span><br><span class="line">                                                          error:nil];</span><br><span class="line">          &#125;</span><br><span class="line">          </span><br><span class="line">          [weakSelf refreshListDidEnd:listArr];</span><br><span class="line"></span><br><span class="line">      &#125;];</span><br><span class="line"></span><br><span class="line">[[XHClient sharedClient].roomManager deleteFromChatroomList:chatRoomID completion:^( NSError *error) &#123;</span><br><span class="line"></span><br><span class="line">      &#125;];</span><br></pre></td></tr></table></figure></p>
<h2 id="5-New-API-for-video-meeting" class="article-heading"><a href="#5-New-API-for-video-meeting" class="headerlink" title="5 New API for video meeting"></a>5 New API for video meeting<a class="article-anchor" href="#5-New-API-for-video-meeting" aria-hidden="true"></a></h2><p>Note: The three APIs below are only used when the private deployment service is available.<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line">NSDictionary *infoDic = @&#123;@<span class="string">"id"</span>:meetingID,</span><br><span class="line">                                           @<span class="string">"creator"</span>:UserId,</span><br><span class="line">                                           @<span class="string">"name"</span>:meetingItem.meetingName</span><br><span class="line">                                           &#125;;</span><br><span class="line">                    NSString *infoStr = [infoDic ilg_jsonString];</span><br><span class="line">                    [[XHClient sharedClient].meetingManager saveToList:UserId type:CHATROOM_LIST_TYPE_MEETING meetingId:meetingID info:[infoStr ilg_URLEncode] completion:^(NSError *error) &#123;</span><br><span class="line">                        </span><br><span class="line">                    &#125;];</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        [[XHClient sharedClient].meetingManager queryMeetingList:@<span class="string">""</span> type:[NSString stringWithFormat:@<span class="string">"%d"</span>, CHATROOM_LIST_TYPE_MEETING] completion:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">            NSArray *listArr = nil;</span><br><span class="line">            <span class="keyword">if</span> (listInfo) &#123;</span><br><span class="line">                NSData *jsonData = [listInfo dataUsingEncoding:NSUTF8StringEncoding];</span><br><span class="line">                listArr = [NSJSONSerialization JSONObjectWithData:jsonData</span><br><span class="line">                                                          options:NSJSONReadingMutableContainers</span><br><span class="line">                                                            error:nil];</span><br><span class="line">            &#125;</span><br><span class="line">            </span><br><span class="line">            [weakSelf refreshListDidEnd:listArr];</span><br><span class="line">        &#125;];</span><br><span class="line"></span><br><span class="line"> [[XHClient sharedClient].meetingManager deleteFromMeetingList: meetingID completion:^( NSError *error) &#123;</span><br><span class="line"></span><br><span class="line">        &#125;];</span><br></pre></td></tr></table></figure></p>
<h2 id="6-New-API-for-interactive-live-broadcast" class="article-heading"><a href="#6-New-API-for-interactive-live-broadcast" class="headerlink" title="6  New API for interactive live broadcast"></a>6  New API for interactive live broadcast<a class="article-anchor" href="#6-New-API-for-interactive-live-broadcast" aria-hidden="true"></a></h2><p>Note: The three APIs below are only used when the private deployment service is available.<br><figure class="highlight java"><table><tr><td class="code"><pre><span class="line"> NSDictionary *infoDic = @&#123;@<span class="string">"id"</span>:liveID,</span><br><span class="line">                                              @<span class="string">"creator"</span>:UserId,</span><br><span class="line">                                              @<span class="string">"name"</span>:name</span><br><span class="line">                                              &#125;;</span><br><span class="line">                    NSString *infoStr = [infoDic ilg_jsonString];</span><br><span class="line">                    [[XHClient sharedClient].meetingManager saveToList:UserId type:CHATROOM_LIST_TYPE_LIVE meetingId:liveID info:[infoStr ilg_URLEncode] completion:^(NSError *error) &#123;</span><br><span class="line">                        </span><br><span class="line">                    &#125;];</span><br><span class="line"></span><br><span class="line">[[XHClient sharedClient].liveManager queryLiveList:@<span class="string">""</span> type:[NSString stringWithFormat:@<span class="string">"%d"</span>, CHATROOM_LIST_TYPE_LIVE] completion:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">            NSArray *listArr = nil;</span><br><span class="line">            <span class="keyword">if</span> (listInfo) &#123;</span><br><span class="line">                NSData *jsonData = [listInfo dataUsingEncoding:NSUTF8StringEncoding];</span><br><span class="line">                listArr = [NSJSONSerialization JSONObjectWithData:jsonData</span><br><span class="line">                                                          options:NSJSONReadingMutableContainers</span><br><span class="line">                                                            error:nil];</span><br><span class="line">            &#125;</span><br><span class="line">            </span><br><span class="line">            [weakSelf refreshListDidEnd:listArr];</span><br><span class="line">        &#125;];</span><br><span class="line"></span><br><span class="line">[[XHClient sharedClient].liveManager deleteFromLiveList:@<span class="string">""</span> type:[NSString stringWithFormat:@<span class="string">"%d"</span>, CHATROOM_LIST_TYPE_LIVE] completion:^(NSString *listInfo, NSError *error) &#123;</span><br><span class="line">            NSArray *listArr = nil;</span><br><span class="line">            <span class="keyword">if</span> (listInfo) &#123;</span><br><span class="line">                NSData *jsonData = [listInfo dataUsingEncoding:NSUTF8StringEncoding];</span><br><span class="line">                listArr = [NSJSONSerialization JSONObjectWithData:jsonData</span><br><span class="line">                                                          options:NSJSONReadingMutableContainers</span><br><span class="line">                                                            error:nil];</span><br><span class="line">            &#125;</span><br><span class="line">            </span><br><span class="line">            [weakSelf refreshListDidEnd:listArr];</span><br><span class="line">        &#125;];</span><br><span class="line"></span><br><span class="line"> [[XHClient sharedClient].liveManager deleteFromLiveList: liveID completion:^( NSError *error) &#123;</span><br><span class="line"></span><br><span class="line">        &#125;];</span><br></pre></td></tr></table></figure></p>

              </div>
              <footer class="article-footer">
                <time class="article-footer-updated" datetime="2020-09-06T01:05:09.806Z" itemprop="dateModified">Last updated<script type="text/javascript">document.write("："+(new Date()).toISOString().slice(0,10))</script></time>
		<a href="index.html" class="article-footer-next" title="Overview"><span>Next</span><i class="fa fa-chevron-right"></i></a>
              </footer>
            </div>
          </div>
          <aside id="article-toc" role="navigation">
            <div id="article-toc-inner">
              <strong class="sidebar-title">Contents</strong>
              <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Instructions-of-private-deployment-server"><span class="toc-text">Instructions of private deployment server</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-Initialization："><span class="toc-text">1 Initialization： </span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-Login-Exit-SDK"><span class="toc-text">2 Login / Exit SDK</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3-New-API-for-IM-group"><span class="toc-text">3 New API for IM group</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#4-New-API-for-IM-chat-room"><span class="toc-text">4 New API for IM chat room</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#5-New-API-for-video-meeting"><span class="toc-text">5 New API for video meeting</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#6-New-API-for-interactive-live-broadcast"><span class="toc-text">6  New API for interactive live broadcast</span></a></li></ol></li></ol>
              <a href="#" id="article-toc-top">Back to Top</a>
            </div>
          </aside>
        </div>
      </article>
      <aside id="sidebar" role="navigation">
  <div class="inner">
    <strong class="sidebar-title">Getting Started</strong><a href="index.html" class="sidebar-link">Overview</a><strong class="sidebar-title">Android</strong><a href="android-1.html" class="sidebar-link">1.prerequisite</a><a href="android-2.html" class="sidebar-link">2.SDK intro</a><a href="android-3b.html" class="sidebar-link">3b.init(private)</a><a href="android-4.html" class="sidebar-link">4.im</a><a href="android-5.html" class="sidebar-link">5.group msg</a><a href="android-6.html" class="sidebar-link">6.chatroom msg</a><a href="android-7.html" class="sidebar-link">7.voip</a><a href="android-8.html" class="sidebar-link">8.meeting</a><a href="android-9.html" class="sidebar-link">9.live</a><a href="android-10.html" class="sidebar-link">10.other components</a><a href="android-11.html" class="sidebar-link">11.super room</a><a href="android-user-list.html" class="sidebar-link">online user list</a><a href="android-beauty-callback.html" class="sidebar-link">beauty</a><a href="android-errCode.html" class="sidebar-link">ErrorCode</a><strong class="sidebar-title">iOS</strong><a href="ios-1.html" class="sidebar-link">1.prerequisite</a><a href="ios-2.html" class="sidebar-link">2.SDK intro</a><a href="ios-3b.html" class="sidebar-link">3b.init(private)</a><a href="ios-4.html" class="sidebar-link">4.im</a><a href="ios-5.html" class="sidebar-link">5.group msg</a><a href="ios-6.html" class="sidebar-link">6.chatroom msg</a><a href="ios-7.html" class="sidebar-link">7.voip</a><a href="ios-8.html" class="sidebar-link">8.meeting</a><a href="ios-9.html" class="sidebar-link">9.live</a><a href="ios-10.html" class="sidebar-link">10.voip direct connection</a><strong class="sidebar-title">web</strong><a href="web-1.html" class="sidebar-link">1.prerequisite</a><a href="web-2.html" class="sidebar-link">2.SDK intro</a><a href="web-4.html" class="sidebar-link">4.im</a><a href="web-5.html" class="sidebar-link">5.group msg</a><a href="web-6.html" class="sidebar-link">6.chatroom msg</a><a href="web-7.html" class="sidebar-link">7.voip</a><a href="web-8.html" class="sidebar-link">8.meeting</a><a href="web-9.html" class="sidebar-link">9.live</a><a href="web-10.html" class="sidebar-link">10.private</a><strong class="sidebar-title">Win PC</strong><a href="win-1.html" class="sidebar-link">1.prerequisite</a><a href="win-2.html" class="sidebar-link">2.init</a><a href="win-3.html" class="sidebar-link">3.im</a><a href="win-4.html" class="sidebar-link">4.group msg</a><a href="win-5.html" class="sidebar-link">5.chatroom msg</a><a href="win-6.html" class="sidebar-link">6.voip</a><a href="win-7.html" class="sidebar-link">7.meeting</a><a href="win-8.html" class="sidebar-link">8.live</a><strong class="sidebar-title">Server API</strong><a href="aec-index.html" class="sidebar-link">Overview</a><a href="aec-group.html" class="sidebar-link">group events</a><a href="aec-chatroom.html" class="sidebar-link">chatroom events</a><a href="aec-voip.html" class="sidebar-link">voip events</a><a href="aec-channel.html" class="sidebar-link">音视频流事件通知</a><a href="aec-other.html" class="sidebar-link">other events</a>
  </div>
</aside>
    </div>
  </div>
</div>

    <footer id="footer" class="wrapper">
  <div class="inner">
    <div id="footer-copyright">
      &copy; 2010-2020 <a href="https://starrtc.gitee.io/" target="_blank">starRTC</a><br>
    </div>
    <div id="footer-links">
      <a href="https://gitee.com/starrtc" class="footer-link" target="_blank"><i class="fa fa-github-alt"></i></a>
    </div>
  </div>
</footer>

  </div>
  <div id="mobile-nav-dimmer"></div>
  <nav id="mobile-nav">
  <div id="mobile-nav-inner">
    <ul id="mobile-nav-list">
      <a href="https://starrtc.gitee.io/" class="main-nav-link">Home</a><a href="https://blog.starRTC.com" class="main-nav-link">Blog</a><a href="https://github.com/starrtc/android-demo/issues" class="main-nav-link">Forum</a><a href="/en/docs/" class="mobile-nav-link">Docs</a><a href="/en/download/" class="mobile-nav-link">Download</a><a href="/en/contact/" class="mobile-nav-link">Contact</a>
      <li class="mobile-nav-item">
        <a href="https://github.com/starrtc" class="mobile-nav-link" rel="external" target="_blank">GitHub</a>
      </li>
    </ul>
    
      <strong class="mobile-nav-title">Getting Started</strong><a href="index.html" class="mobile-nav-link">Overview</a><strong class="mobile-nav-title">Android</strong><a href="android-1.html" class="mobile-nav-link">1.prerequisite</a><a href="android-2.html" class="mobile-nav-link">2.SDK intro</a><a href="android-3b.html" class="mobile-nav-link">3b.init(private)</a><a href="android-4.html" class="mobile-nav-link">4.im</a><a href="android-5.html" class="mobile-nav-link">5.group msg</a><a href="android-6.html" class="mobile-nav-link">6.chatroom msg</a><a href="android-7.html" class="mobile-nav-link">7.voip</a><a href="android-8.html" class="mobile-nav-link">8.meeting</a><a href="android-9.html" class="mobile-nav-link">9.live</a><a href="android-10.html" class="mobile-nav-link">10.other components</a><a href="android-11.html" class="mobile-nav-link">11.super room</a><a href="android-user-list.html" class="mobile-nav-link">online user list</a><a href="android-beauty-callback.html" class="mobile-nav-link">beauty</a><a href="android-errCode.html" class="mobile-nav-link">ErrorCode</a><strong class="mobile-nav-title">iOS</strong><a href="ios-1.html" class="mobile-nav-link">1.prerequisite</a><a href="ios-2.html" class="mobile-nav-link">2.SDK intro</a><a href="ios-3b.html" class="mobile-nav-link">3b.init(private)</a><a href="ios-4.html" class="mobile-nav-link">4.im</a><a href="ios-5.html" class="mobile-nav-link">5.group msg</a><a href="ios-6.html" class="mobile-nav-link">6.chatroom msg</a><a href="ios-7.html" class="mobile-nav-link">7.voip</a><a href="ios-8.html" class="mobile-nav-link">8.meeting</a><a href="ios-9.html" class="mobile-nav-link">9.live</a><a href="ios-10.html" class="mobile-nav-link">10.voip direct connection</a><strong class="mobile-nav-title">web</strong><a href="web-1.html" class="mobile-nav-link">1.prerequisite</a><a href="web-2.html" class="mobile-nav-link">2.SDK intro</a><a href="web-4.html" class="mobile-nav-link">4.im</a><a href="web-5.html" class="mobile-nav-link">5.group msg</a><a href="web-6.html" class="mobile-nav-link">6.chatroom msg</a><a href="web-7.html" class="mobile-nav-link">7.voip</a><a href="web-8.html" class="mobile-nav-link">8.meeting</a><a href="web-9.html" class="mobile-nav-link">9.live</a><a href="web-10.html" class="mobile-nav-link">10.private</a><strong class="mobile-nav-title">Win PC</strong><a href="win-1.html" class="mobile-nav-link">1.prerequisite</a><a href="win-2.html" class="mobile-nav-link">2.init</a><a href="win-3.html" class="mobile-nav-link">3.im</a><a href="win-4.html" class="mobile-nav-link">4.group msg</a><a href="win-5.html" class="mobile-nav-link">5.chatroom msg</a><a href="win-6.html" class="mobile-nav-link">6.voip</a><a href="win-7.html" class="mobile-nav-link">7.meeting</a><a href="win-8.html" class="mobile-nav-link">8.live</a><strong class="mobile-nav-title">Server API</strong><a href="aec-index.html" class="mobile-nav-link">Overview</a><a href="aec-group.html" class="mobile-nav-link">group events</a><a href="aec-chatroom.html" class="mobile-nav-link">chatroom events</a><a href="aec-voip.html" class="mobile-nav-link">voip events</a><a href="aec-channel.html" class="mobile-nav-link">音视频流事件通知</a><a href="aec-other.html" class="mobile-nav-link">other events</a>
    
  </div>
  <div id="mobile-lang-select-wrap">
    <span id="mobile-lang-select-label"><i class="fa fa-globe"></i><span>English</span></span>
    <select id="mobile-lang-select" data-canonical="docs/ios-3.html">
      
        <option value="en" selected>English</option>
      
        <option value="zh-cn">简体中文</option>
      
    </select>
  </div>
</nav>
  <!-- Scripts -->
<!-- build:js build/js/main.js -->
<script src="/js/lang_select.js"></script>
<script src="/js/toc.js"></script>
<script src="/js/mobile_nav.js"></script>
<!-- endbuild -->
<!-- Algolia -->

<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
<script type="text/javascript">
document.getElementById('search-input-wrap').classList.add('on');
docsearch({
  apiKey: 'c3d5d4c995b5e0c2ffb5623900279a66',
  indexName: 'hexo',
  inputSelector: '#search-input'
});
</script>


</body>
</html>